<?php

namespace SisGG\FinalBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use SisGG\FinalBundle\Form\ProvinciaType;
use SisGG\FinalBundle\Entity\Provincia;
use SisGG\FinalBundle\Form\CiudadType;
use SisGG\FinalBundle\Entity\Empresa;
use SisGG\FinalBundle\Controller\EmpresaController;
use SisGG\FinalBundle\Entity\Ciudad;

/**
 * Description of ProvinciaController
 *
 * @author martin
 */
class ProvinciaController extends Controller {

    public function nuevaProvinciaAction() {
        $formulario = $this->createForm(new ProvinciaType());
        $parameters = array('form' => $formulario->createView(), 'error' => null);
        return $this->render('SisGGFinalBundle:Provincia:nuevaProvincia.html.twig', $parameters);
    }

    public function altaProvinciaAction(Empresa $empresa = null) {
        $provincia = new Provincia();
        $empresa = $this->getEmpresa();
        $formulario = $this->createForm(new ProvinciaType(), $provincia);
        $formulario->bindRequest($this->getRequest());
        if ($formulario->isValid()) {
            $r = $empresa->agregarProvincia($provincia, $this);
            if ($r == null) {
                $msj = "La Provincia " . $provincia->getNombre() . " ha sido exitosamente registrada.";
                $this->getRequest()->getSession()->set('msj', $msj);
                return $this->redirect($this->generateUrl('provincias', array('msj' => null, 'error' => null)));
            } else {
                return $this->render('SisGGFinalBundle:Provincia:nuevaProvincia.html.twig', array('form' => $formulario->createView(), 'error' => $r));
            }
        }
        return $this->render('SisGGFinalBundle:Provincia:nuevaProvincia.html.twig', array('form' => $formulario->createView(), 'error' => null));
    }

    public function altaProvinciaEnCiudadAction(Empresa $empresa = null) {
        if ($this->getRequest()->isXmlHttpRequest()) {
            $provincia = new Provincia();
            $empresa = $this->getEmpresa();
            $formulario = $this->createForm(new ProvinciaType(), $provincia);
            $formulario->bindRequest($this->getRequest());
            $nombre = $this->getRequest()->get('nomProv');
            $provincia->setNombre($nombre);


            $ciu = new Ciudad();
            $fciu = $this->createForm(new CiudadType(), $ciu);


            $r = $empresa->agregarProvincia($provincia, $this);
            if ($r == null) {
                $provincias = $this->getDoctrine()->getRepository('SisGGFinalBundle:Provincia')->findAll();
                $parameters = array('form' => $fciu->createView(), 'provincias' => $provincias, 'msj2' => "La Provincia " . $provincia->getNombre() . " ha sido exitosamente registrada.", 'error' => $r);
                return $this->render('SisGGFinalBundle:Provincia:provinciasInCiudad.html.twig', $parameters);

                //return $this->render ('SisGGFinalBundle:Ciudad:nuevaCiudad', array('msj2' => "La Provincia " . $provincia->getNombre() . " ha sido exitosamente registrada.",'error'=>null));
            } else {
                $provincias = $this->getDoctrine()->getRepository('SisGGFinalBundle:Provincia')->findAll();
                $parameters = array('form' => $fciu->createView(), 'provincias' => $provincias, 'msj2' => null, 'error' => $r);
                return $this->render('SisGGFinalBundle:Provincia:provinciasInCiudad.html.twig', $parameters);
                //return $this->render('SisGGFinalBundle:Ciudad:nuevaCiudad.html.twig', array('form' => $formulario->createView(), 'error' => $r));
            }
        } else {
            //throw new \Exception('La página solitada no contiene información que uds. puede leer.');
            throw $this->createNotFoundException('La página solitada no contiene información que uds. puede leer.');
        }
    }

    public function editarProvinciaAction() {
        $em = $this->getDoctrine()->getEntityManager();
        $repositorio = $em->getRepository('SisGGFinalBundle:Provincia');
        $provincia = $repositorio->find($this->getRequest()->get('id'));
        $formulario = $this->createForm(new ProvinciaType(), $provincia);
        $this->getRequest()->getSession()->set('idProv', $provincia->getId());
        $parameters = array('form' => $formulario->createView(), 'error' => null);
        return $this->render('SisGGFinalBundle:Provincia:editarProvincia.html.twig', $parameters);
    }

    public function modificarProvinciaAction(Empresa $empresa = null) {
        $empresa = $this->getEmpresa();
        $em = $this->getDoctrine()->getEntityManager();
        $repositorio = $em->getRepository('SisGGFinalBundle:Provincia');
        $provincia = $repositorio->find($this->getRequest()->getSession()->get('idProv'));
        $formulario = $this->createForm(new ProvinciaType(), $provincia);
        $formulario->bindRequest($this->getRequest());
        if ($formulario->isValid()) {
            $r = $empresa->modificarProvincia($provincia, $this);
            if ($r == null) {
                $msj = "La Provincia " . $provincia->getNombre() . " ha sido exitosamente modificada.";
                $this->getRequest()->getSession()->set('msj', $msj);
                return $this->redirect($this->generateUrl('provincias', array('msj' => null, 'error' => null)));
            } else {
                return $this->render('SisGGFinalBundle:Provincia:editarProvincia.html.twig', array('form' => $formulario->createView(), 'id' => $this->getRequest()->get('id'), 'error' => $r));
            }
        }
    }

    public function eliminarProvinciaAction(Empresa $empresa = null) {
        $empresa = $this->getEmpresa();
        $em = $this->getDoctrine()->getEntityManager();
        $repositorio = $em->getRepository('SisGGFinalBundle:Provincia');
        $provincias = $repositorio->findAll();
        $provincia = $repositorio->find($this->getRequest()->get('id'));
        $r = $empresa->eliminarProvincia($provincia, $this);
        if ($r == null) {
            $msj = "La Provincia " . $provincia->getNombre() . " ha sido exitosamente eliminada.";
            $this->getRequest()->getSession()->set('msj', $msj);
            return $this->redirect($this->generateUrl('provincias', array('msj' => null, 'error' => null)));
        } else {
            return $this->render('SisGGFinalBundle:Provincia:provincias.html.twig', array('provincias' => $provincias, 'msj' => null, 'error' => $r));
        }
    }

    public function provinciasAction() {
        $repositorio = $this->getDoctrine()->getRepository('SisGGFinalBundle:Provincia');
        $provincias = $repositorio->findAll();
        $msj = $this->getRequest()->getSession()->get('msj');
        $parameters = array('provincias' => $provincias, 'msj' => $msj, 'error' => null);
        $this->getRequest()->getSession()->clear();
        return $this->render('SisGGFinalBundle:Provincia:provincias.html.twig', $parameters);
    }

    public function getEmpresa() {
        $em = $this->getDoctrine()->getEntityManager();
        $empresa = $em->getRepository('SisGGFinalBundle:Empresa')->find(1);
        return $empresa;
    }

}